个人看法
此节快速略过,注意时间复杂度如何计算
考纲
算法时间复杂度和空间复杂度的分析与计算
知识框架
数据结构的基本概念
基本概念和术语
数据对象:具有相同性质的数据元素的集合,是数据的一个子集。
数据类型数据类型:原子类型原子类型,结构类型结构类型,抽象数据类型抽象数据类型
数据结构数据结构:包括三方面——逻辑结构,存储结构和数据的运算。
tips
数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。数据结构三要素
数据的逻辑结构
数据的存储结构
存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。主要分为以下
1.顺序存储顺序存储
2.链式存储链式存储
3.索引存储索引存储
4.散列存储散列存储
数据的运算
施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。
算法和算法评价
算法的基本概念
算法算法的五个重要特性:有穷性有穷性,确定性确定性,可行性可行性,输入输入,输出输出。 好的算法目标:正确性,可读性,健壮性,高效率与低存储量需求。
习题
1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
tips:答案
数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。 如数学计算中用到的整数和实数, 文本编辑所用到的字符串, 多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素 :是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些 情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个 学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项 :是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信 息表中的学号、姓名、性别等都是数据项。
数据对象 :是性质相同的数据元素的集合,是数据的一个子集。
数据结构 :是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结 构是带“结构”的数据元素的集合, “结构”就是指数据元素之间存在的关系。
逻辑结构 :从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此, 数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构: 数据对象在计算机中的存储表示,也称为 物理结构 。
抽象数据类型 :由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一 组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操 作的集合。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两个层次的含义及相互关系。
tips:答案
例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生 基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性 序列。 对于整个表来说, 只有一个开始结点 ( 它的前面无记录 ) 和一个终端结点 ( 它的后面无记 录 ) ,其他的结点则各有一个也只有一个直接前趋和直接后继。 学生记录之间的这种关系就确 定了学生表的逻辑结构,即线性结构。
这些学生记录在计算机中的存储表示就是存储结构。 如果用连续的存储单元 ( 如用数组表 示 ) 来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录, 然后用指针进行链接,则称为链式存储结构。
即相同的逻辑结构,可以对应不同的存储结构。
tips:答案
( 1)集合结构
数据元素之间除了“属于同一集合”的关系外,别无其他关系。例如,确定一名学生是 否为班级成员,只需将班级看做一个集合结构。
( 2)线性结构
数据元素之间存在一对一的关系。例如,将学生信息数据按照其入学报到的时间先后顺 序进行排列,将组成一个线性结构。
( 3)树结构
数据元素之间存在一对多的关系。例如,在班级的管理体系中,班长管理多个组长,每 位组长管理多名组员,从而构成树形结构。
( 4)图结构或网状结构
数据元素之间存在多对多的关系。例如,多位同学之间的朋友关系,任何两位同学都可 以是朋友,从而构成图形结构或网状结构。
其中树结构和图结构都属于非线性结构。
tips:答案
( 1)顺序存储结构
顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常 借助程序设计语言的数组类型来描述。
( 2)链式存储结构
顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无 需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用于 存放后继元素的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。
tips:答案
C
( 2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的( )。 A.存储结构 B .存储实现 C.逻辑结构 D .运算实现
tips:答案
C
( 3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着( )。 A .数据具有同一特点 B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等
tips:答案
B
( 4)以下说法正确的是( )。
A.数据元素是数据的最小单位 B.数据项是数据的基本单位 C.数据结构是带有结构的各数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构
tips:答案
D
解释:数据元素是数据的基本单位,数据项是数据的最小单位,数据结构是带有结构 的各数据元素的集合。
tips:答案
D
解释:算法的时间复杂度不仅与问题的规模有关,还与问题的其他因素有关。如某些 排序的算法,其执行时间与待排序记录的初始状态有关。为此,有时会对算法有最好、最坏 以及平均时间复杂度的评价。
tips:答案
A
6.试分析下面各程序段的时间复杂度。
tips:答案
哈哈哈
(1)x=90; y=100;
while(y>0)
if(x>100)
{x=x-10;y--;}
else x++;
(2)for(i=0; i<n; i++)
for(j=0; j<m; j++)
a[i][j]=0;
(3)s=0;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
s+=B[i][j];
sum=s;
(4)i=1;
while(i<=n)
i=i*3;
(5)x=0;
for(i=1; i<n; i++)
for(j=1; j<=n-i; j++)
x++;
(6)x=n; //n>1
y=0;
while(x≥(y+1)*(y+1))
y++;
tips:答案
(1) O(1)
(2) O(m*n)
(3) O(n2)
(4) O(log3n)
(5) O(n2)
(6) O(√n)
王道习题
tips:答案
哈哈哈
输出. 一个或者多个输出 ↩
输入. 一个算法有0个或多个输入 ↩
可行性. 算法中描述的操作都可以通过已实现的基本运算执行有限次数来实现 ↩
确定性. 算法中每条指令必须又确切的含义,对于相同输入得出相同输出 ↩
有穷性. 一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。 ↩
算法. 是对特定问题求解步骤的一种描述,他是指令的有限序列,其中的每条指令表示一个或多个操作。 ↩
数据. 数据是信息的载体,是描述客观事物数学的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 ↩
数据元素. 一个数据元素可由若干个数据项组成,数据项是构成数据元素不可分割的最小单位。例如,学生记录就是一个数据元素,它由学号、姓名等数据项组成。 ↩
数据类型. 是一个值的集合和定义在此集合上的一组操作的总称。 ↩
原子类型. 其值不可再分的数据类型 ↩
结构类型. 其值可以再分解为若干成分(分量)的数据类型。 ↩
抽象数据类型. 抽象数据组织及与之相关的操作 ↩
数据结构. 是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素都不是孤立存在的,他们之间存在某种关系,这种数据元素相互之间的关系称之为结构。 ↩
顺序存储. 逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
优点:可以实现随机存取,每个元素占用最少的存储空间。
缺点:只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片。 ↩
链式存储. 不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。
优点:不会出现碎片现象,能充分利用所有的存储单元。
缺点:每个元素因存储指针而占用额外的存储空间,且只能实现顺序存取。 ↩
索引存储. 在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项一般的形式(关键字,地址)。
优点:检索速度快
缺点:附加的索引表额外占用存储空间,另外增加和删除数据时也要修改索引表,会花更多时间。 ↩
散列存储. 根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储。
优点:检索,增加和删除结点的操作都很快。
缺点:若散列函数不好,则可能出现元素存储单元的冲突,而解决冲突会怎加时间和空间的开销。 ↩